﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados_;
using Dados_.ClassesDados;
using System.ComponentModel;
using System.Data.Linq;

namespace Negocios
{   [DataObject ]
    public class VendaBOMetodos
    {   [DataObjectMethod(DataObjectMethodType.Insert,true)]
        public void Inserir(VendaBO vBO) {
            try
            {
               VendaLINQ  vlinq = new VendaLINQ(new DigitalTVContextDataContext());
                var vVo = new VendaVO();
                vVo.dc_Preco = vBO.Preco.Value;
                vVo.dt_Data = vBO.Data.Value ;
                vVo.nr_Pacote = vBO.Pacote.Value ;
                vVo.tx_Usuario  = vBO.Usuario ;
                vVo.tx_Cliente = vBO.Cliente;
                vlinq.Inserir(vVo);
            }
            catch (Exception ex) { 
            
            
            }
        }
    [DataObjectMethod(DataObjectMethodType.Update, true)]
        public void Atualizar(VendaBO vBO)
            {
            try{
             VendaLINQ vDAO = new VendaLINQ();
              var vVo = new VendaVO();
                vVo.dc_Preco = vBO.Preco.Value ;
                vVo.dt_Data = vBO.Data.Value ;
                vVo.nr_Pacote = vBO.Pacote.Value ;
                vVo.tx_Usuario  = vBO.Usuario ;
                vVo.tx_Cliente = vBO.Cliente;
                vVo.ID=vBO.Id;
                vDAO.Atualizar(vVo);

            }catch(Exception ex)
            {
            
            }
            
            }
    [DataObjectMethod(DataObjectMethodType.Delete, true)]
        public void Remover(VendaBO vBO)
        {
        try{
              VendaLINQ vDAO = new VendaLINQ();
              var vVo = new VendaVO();
            vVo.ID=vBO.Id;
            vDAO.Remover(vVo);

        }catch(Exception ex)
        {
        
        }
        }
       [DataObjectMethod(DataObjectMethodType.Select, false)] 
        public VendaBO GetVendabyId(int id)
        {
        try{
              VendaLINQ vDAO = new VendaLINQ();
              var vVO = vDAO.Obter(o=>o.ID==id);
              return new VendaBO{Cliente=vVO.tx_Cliente,Data=vVO.dt_Data.Value ,Id=vVO.ID,
                  Pacote=vVO.nr_Pacote.Value ,Preco=vVO.dc_Preco.Value ,Usuario=vVO.tx_Usuario   };
            
            
        
        
        }catch(Exception ex){
            return null;
        }
        
        }

       [System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Select)]
       public List<VendaBO> GetAllVenda()
       {
           try
           {
               List<VendaBO> listaBO = new List<VendaBO>();

               Action<VendaVO> converte = b =>
               {
                   var v = new VendaBO();
                   v.Cliente = b.tx_Cliente;
                   v.Data = b.dt_Data;
                   v.Id = b.ID;
                   v.Pacote = b.nr_Pacote;
                   v.Preco = b.dc_Preco;
                   v.Usuario = b.tx_Usuario ;
                   listaBO.Add(v);
               };



              VendaLINQ  vDAO = new VendaLINQ ();
               var listaVO = vDAO.ObterLista();

               listaVO.ForEach(converte);
               return listaBO;

           }
           catch (Exception ex)
           {
               return null;
           }
       }
        
  
        }

    }

